package uade.distribuidas.server.manager;

import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.util.ArrayList;
import java.util.List;



import uade.distribuidas.repo.dto.ClienteDTO;
import uade.distribuidas.repo.dto.CondicionVentaDTO;
import uade.distribuidas.repo.exception.ExceptionCliente;
import uade.distribuidas.repo.interfaces.IGestionCliente;
import uade.distribuidas.server.dao.ClientesDAO;
import uade.distribuidas.server.domain.Cliente;
import uade.distribuidas.server.domain.CondicionVenta;



public class ManagerClientes extends UnicastRemoteObject implements IGestionCliente{
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;


	public ManagerClientes() throws RemoteException {
		super();
		// TODO Auto-generated constructor stub
	}

	
	
	public List<ClienteDTO> getClientes() throws ExceptionCliente{
		List<ClienteDTO> datos = new ArrayList<ClienteDTO>();
		for(Cliente c : ClientesDAO.getInstancia().getClientes()){
			datos.add(c.getVista());
		}
		return datos;
	
	}

	public ClienteDTO getCliente(Integer id) throws ExceptionCliente {
		return ClientesDAO.getInstancia().getCliente(id).getVista();
	}
	
	public ClienteDTO getCliente(String cuil,String razonSocial) throws ExceptionCliente {
		return ClientesDAO.getInstancia().getCliente(cuil,razonSocial).getVista();
	}
	
	public ClienteDTO save(ClienteDTO c) throws ExceptionCliente {
		Cliente clase=new Cliente();
		clase.setCondicionIva(c.getCondicionIva());
		clase.setCuil(c.getCuil());
		clase.setDomicilio(c.getDomicilio());
		clase.setEstado(c.getEstado());
		clase.setId(c.getId());
		clase.setRazonSocial(c.getRazonSocial());
		clase.setTelefono(c.getTelefono());
    	List<CondicionVenta> ventas=new ArrayList<CondicionVenta>();
    	for(CondicionVentaDTO co:c.getCondicionesVenta()){
    		CondicionVenta cv = new CondicionVenta();
    		cv.setDescripcion(co.getDescripcion());
    		cv.setEstado(co.getEstado());
    		cv.setId(co.getId());
    		ventas.add(cv);
    	}
		clase.setCondicionesVenta(ventas);
		return ClientesDAO.getInstancia().save(clase).getVista();
	}
	

}
